package ctr.eleve;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JOptionPane;
import javax.swing.JTextField;

import jdbc.Connexion;
import metier.Eleve;
import metier.Stage;
import metier.jdbc.EleveJdbc;
import vue.MenuControle;
import vue.commun.JPanRechercherEleve;
import vue.eleve.RechercherEleve;
import configuration.Constante;
import configuration.MessageAppli;

public class GestRechercherEleve implements ActionListener {

	JPanRechercherEleve jPanRechercherEleve;
	RechercherEleve jPanAppelant;
	
	public GestRechercherEleve(JPanRechercherEleve jPanRechercherEleve, RechercherEleve jPanAppelant){
		this.jPanRechercherEleve = jPanRechercherEleve;
		this.jPanAppelant = jPanAppelant;
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		String nom = null;
		String prenom = null;
		Stage stage = null;
		
		try {
			// Test nom
			JTextField jtextNom = jPanRechercherEleve.getSaisiRechercheNomEleve();
			if (!jtextNom.getText().matches(Constante.REGEX_ALPHANUM)) {
				throw new Exception(MessageAppli.MSG_CHAMPS_ALPHANUM);
			}else{
				nom = jtextNom.getText();
			}
			
			// Test prenom
			JTextField jtextPrenom = jPanRechercherEleve.getSaisiRecherchePrenomEleve();
			if (!jtextPrenom.getText().matches(Constante.REGEX_ALPHANUM)) {
				throw new Exception(MessageAppli.MSG_CHAMPS_ALPHANUM);
			}else{
				prenom = jtextPrenom.getText();
			}
			
			// Recuperation du Stage
			// Ne peut pas etre null, puisque comboBox. Il y a forcement un stage de séléctionné par défaut.
			if (jPanRechercherEleve.getSaisiRechercheStage().getSelectedItem() != null ){
				stage = (Stage) jPanRechercherEleve.getSaisiRechercheStage().getSelectedItem();
			}
			
			boolean trouve= false;
			if (!"".equals(nom) && !"".equals(prenom)){
				// TODO Gerer si plusieurs eleve sont retourner.
				Eleve eleveRechercher = new Eleve (null, nom, prenom, null, null, ((stage!=null)?stage.getIdStage():null) , null);
				Eleve eleve = EleveJdbc.rechercherEleve(Connexion.getConnexion(), eleveRechercher);
				if ( eleve != null ){
						jPanAppelant.setEleve(eleve);
						trouve = true;
						MenuControle.afficherPan(jPanAppelant.init());
				}
			}
			
			// Si l'eleve est trouvé on rempli la parti modifier.
			if (!trouve){
				throw new Exception(MessageAppli.MSG_ELEVE_INEXSITANT);
			}
		} catch (Exception exception) {
			exception.printStackTrace();
			JOptionPane.showMessageDialog(jPanRechercherEleve, exception.getMessage(), MessageAppli.MSG_TITRE_INFO, JOptionPane.WARNING_MESSAGE);
		}
	}
}
